package org.zn.note.spring.dao.jpa;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.zn.note.spring.domain.Ingredient;

import java.util.List;

// CrudRepository 定义了很多CRUD方法，CrudRepository<table bean, id type>
// 另外，不用写实现类！Spring Data Jpa在运行时自动生成实现类！
// 如果需要特定的查询，只需要根据Spring Data Jpa特殊的方法命名格式，就可以自动给你生成实现！
public interface IngredientJpaRepository
        extends CrudRepository<Ingredient, String> {
    // 动词 + 主题(可选) + By + 断言
    // find + Ingredient(可省略) + By + Name
    // 动词 get = read = find，还有 count(返回int)
    // 主题，可以随便写，也可以不写，因为是根据 CrudRepository<Ingredient, String> 去查找的，和主题没关系
    // 断言是关键，支持很多断言：After、Between、Before 等等
    // 用什么断言，和方法参数的顺序是有关系的，因为会根据断言解析，然后按顺序取方法参数，拼装where条件
    List<Ingredient> findByName(String name);

    // 对于比较复杂的SQL，直接用@Query写SQL
//    @Query(value = "ingredient o where o.name='xxx'")
//    List<Ingredient> findxxxx();
}